import os

# 修复SSL权限错误 - 禁用SSL密钥日志
os.environ['SSLKEYLOGFILE'] = ''
from langchain_experimental.tools.python.tool import PythonREPLTool
from langchain_core.prompts import PromptTemplate
from langgraph.prebuilt import create_react_agent
from langchain_core.messages import HumanMessage, SystemMessage

from app.bailian.common import llm

# 定义工具
tools = [PythonREPLTool()]
tool_names = ["PythonREPLTool"]

# 创建智能体
agent = create_react_agent(
    model=llm,
    tools=tools,
    debug=True,
)

# 创建提示词模板
prompt_template = PromptTemplate.from_template(template="""
尽你所能回答用户的问题或执行用户的命令，你可以使用以下工具：[{tool_names}]
--
注意：
- PythonREPLTool工具的入参是python代码，不允许添加 ```py 标记
--
要求：{input}
""")

# 生成提示词
prompt = prompt_template.format(
    tool_names=", ".join(tool_names),
    input="""
1. 向 /Users/sam/Work/imooc_agent/ai-code_agent-test/.temp 目录下写入一个新文件，名称为：index.html
2. 写一个在线教育产品的官网，包含3个tab，分别是：首页、实战课、体系课和关于我们
3. 首页展示3个模块，分别是：热门课程、上新课程、爆款课程
4. 关于我们展示平台的联系方式等基本信息
"""
)

messages = [
    SystemMessage(content="""
尽你所能回答用户的问题或执行用户的命令，你可以使用以下工具：[{tool_names}]
--
注意：
- PythonREPLTool工具的入参是python代码，不允许添加 ```py 标记
""".format(tool_names=", ".join(tool_names))),
    HumanMessage(content=prompt)
]

result = agent.invoke({"messages": messages})
print(result['messages'][-1].content)